const { unauthorized } = require('../utils/response');
const { verifyToken } = require('../utils/jwt');

// 前端登录后，访问需要权限的接口时携带 token
exports.protect = (req, res, next) => {
  try {
    // 从请求头获取 token（前端需在请求头添加 Authorization: Bearer <token>）
    const authHeader = req.headers.authorization;
    if (!authHeader || !authHeader.startsWith('Bearer ')) {
      return unauthorized('未提供 token');
    }

    const token = authHeader.split(' ')[1];
    const decoded = verifyToken(token); // 验证 token 有效性
    
    // 将用户 ID 注入 req 对象（控制器可直接使用）
    req.user = { id: decoded.id };
    next();
  } catch (err) {
    // token 无效或过期（前端提示重新登录）
    return unauthorized('token 无效或已过期');
  }
};